package com.LFLWZ.mapper;

import com.LFLWZ.beans.Dto.adminListQuery;
import com.LFLWZ.beans.POJO.*;
import com.LFLWZ.beans.Vo.ClassroomCourseVo;
import com.LFLWZ.beans.Vo.CourseByType;
import com.LFLWZ.beans.Vo.UserlogSheet;
import com.LFLWZ.beans.Vo.addLike;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.PathVariable;

import javax.websocket.server.PathParam;
import java.util.List;

/**
 * (ClassroomCourse)表数据库访问层
 *
 * @author lujum
 * @since 2020-12-03 01:41:19
 */
public interface ClassroomCourseMapper {


    /**
     * 按学习人数查询的优秀课程
     * @return
     */
    List<ClassroomCourse> selByStudyNumber();
    /**获取所有分类
     * @return
     */
    List<filtrate> sel_filtrate();

    /**
     * 学习记录
     * @param uid
     * @return
     */
    List<UserlogSheet> selLog(Integer uid);
    /**
     * 按分类 搜索 排序 标签 综合 分类
     *
     * @param courseByType
     * @return
     */
    List<ClassroomCourse> selFiltrate(CourseByType courseByType, @PathParam("offset") Integer offset, @PathParam("limit") Integer limit);

    /**
     * 查询指定分类的课程id
     *
     * @param filtrate
     * @return
     */
    List<CourseFiltrate> selCourse_filtrate(Integer filtrate);

    /**
     * 根据uid判断关注列表
     * @param uid
     * @return
     */
    List<ClassroomCourse> selByUid(@Param("uid") Integer uid,@PathParam("status") Integer status);

    /**
     * 新增课程和分类的记录 查询和删除
     * @param courseFiltrate
     * @return
     */
    int inFiltrate(CourseFiltrate courseFiltrate);
    CourseFiltrate selByFiltrate(CourseFiltrate courseFiltrate);
    int upFiltrate(CourseFiltrate courseFiltrate);
    boolean deFiltrate(Integer id);
    /**
     * 根据用户id查询讲师发布的课程
     * @param uid
     * @return
     */
    List<ClassroomCourse> selByLecture(@Param("uid") Integer uid);
    /**
     * 查询课程类型表和课程表的关联数据
     *
     * @param id
     * @return
     */
    List<CourseAndType> selTypeAndCourse(@PathVariable int id);

    /**
     * 查询课程类型全部
     *
     * @return
     */
    List<CourseType> selCourseType(CourseType courseType);

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    ClassroomCourseVo queryById(Integer id);

    /**
     * 查询指定行数据
     *
     * @param //offset 查询起始位置
     * @param //limit  查询条数
     * @return 对象列表
     */
    List<ClassroomCourse> queryAllByLimit(adminListQuery adminListQuery);

    /**
     * 查询总条数
     * @return
     */
    int count();
    /**
     * 通过实体作为筛选条件查询
     *
     * @param classroomCourse 实例对象
     * @return 对象列表
     */
    List<ClassroomCourse> queryAll(ClassroomCourse classroomCourse);

    /**
     * 新增数据
     *
     * @param classroomCourse 实例对象
     * @return 影响行数
     */
    int insert(ClassroomCourseVo classroomCourse);

    /**
     * 修改数据
     *
     * @param classroomCourse 实例对象
     * @return 影响行数
     */
    int update(ClassroomCourseVo classroomCourse);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Integer id);

}